const jwt = require('jsonwebtoken');
const { get } = require('/AdminApi/sale_Data'); // 假设你有一个 User 模型用于查询用户数据

const SECRET_KEY = 'your_secret_key'; // 你的 JWT 密钥，用来验证 token

// 验证 token 的中间件
const verifyToken = async (req, res, next) => {
    const token = req.headers['authorization']?.split(' ')[1]; // 获取请求头中的 token（格式为 "Bearer token_value"）

    if (!token) {
        return res.status(403).json({ message: 'No token provided' }); // 如果没有 token，返回错误
    }

    try {
        // 验证 token 的合法性
        const decoded = jwt.verify(token, SECRET_KEY);

        // 如果验证通过，将解码后的用户信息存储在 req.user 上，后续的路由可以访问
        req.user = decoded;

        // 根据 token 解码的用户 ID 获取用户资料
        const user = await User.findById(decoded.id);

        if (!user) {
            return res.status(404).json({ message: 'User not found' }); // 如果找不到用户，返回错误
        }

        // 将用户信息存储在 req.user 上，后续的路由可以直接使用
        req.user = user;

        next(); // 验证通过，继续执行下一个中间件或路由
    } catch (error) {
        console.error(error);
        return res.status(401).json({ message: 'Invalid or expired token' }); // 如果 token 验证失败，返回错误
    }
};

module.exports = { verifyToken };
